package cn.lkk.samples.apis;

/**
 * java.lang.Integer 类的使用演示。
 * 该类用于是原始类型 int 的包装类，其他包装类的使用方法也类似。
 */
public class IntegerAPI {
    public static void main(String[] args) {
        parseInt();
    }

    /**
     * 使用包装类将整数打印为二进制形式
     */
    public static void toBinaryString() {

        String binaryFormat = Integer.toBinaryString(27);
        System.out.println("27 = " + binaryFormat);
    }

    /**
     * 演示 Integer 的基本使用
     * 包括如何在原始类型与包装类之间转换，这个转换并不是必要的，可以由编译器执行自动装箱和拆箱
     */
    public static void basic() {
        Integer integer = new Integer(5);//可以自动装箱
        int val = integer.intValue();//可以自动拆箱
    }

    /**
     * 演示如何将字符串解析为包装类
     * 可以使用 parseInt 和 valueOf，得到的结果是一样的
     */
    public static void parseInt() {

        //第一个参数是要解析的字符串，第二个参数是进制
        System.out.println(Integer.parseInt("0", 10));// 返回 0
        System.out.println(Integer.parseInt("473", 10));// 返回 473
        System.out.println(Integer.parseInt("-0", 10));// 返回 0
        System.out.println(Integer.parseInt("-FF", 16));// 返回 -255
        System.out.println(Integer.parseInt("1100110", 2));//返回 102
        System.out.println(Integer.parseInt("2147483647", 10));// 返回 2147483647
        System.out.println(Integer.parseInt("-2147483648", 10));// 返回 -2147483648
        //System.out.println(Integer.parseInt("2147483648", 10));//  抛出 NumberFormatException
        //System.out.println(Integer.parseInt("99", 8));// 抛出 NumberFormatException
        //System.out.println(Integer.parseInt("Kona", 10));// 抛出 NumberFormatException
        System.out.println(Integer.parseInt("Kona", 27));// 返回 411787

    }
}
